<?php
// 智能网站生成器 - 简单引导文件

// 定义常量
define('APP_PATH', __DIR__ . '/app/');
define('PUBLIC_PATH', __DIR__ . '/public/');

error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);

// 简单的自动加载函数
spl_autoload_register(function($className) {
    $classFile = str_replace('\\', '/', $className) . '.php';
    
    // 检查控制器类
    if (strpos($className, 'app\\controller\\') === 0) {
        $filePath = APP_PATH . 'controller/' . substr($classFile, strlen('app/controller/'));
        if (file_exists($filePath)) {
            require_once $filePath;
            return true;
        }
    }
    
    // 检查服务类
    if (strpos($className, 'app\\service\\') === 0) {
        $filePath = APP_PATH . 'service/' . substr($classFile, strlen('app/service/'));
        if (file_exists($filePath)) {
            require_once $filePath;
            return true;
        }
    }
    
    return false;
});

// 简单的请求处理函数
function handleRequest() {
    // 获取请求URI
    $uri = $_SERVER['REQUEST_URI'];
    $uri = parse_url($uri, PHP_URL_PATH);
    
    // 简单的路由匹配
    $routes = include __DIR__ . '/route/app.php';
    
    foreach ($routes as $routePattern => $routeInfo) {
        // 处理参数路由
        $pattern = preg_replace('/:\w+/', '([^/]+)', $routePattern);
        $pattern = str_replace('/', '\/', $pattern);
        
        if (preg_match('/^' . $pattern . '$/', $uri, $matches)) {
            // 检查请求方法
            if ($_SERVER['REQUEST_METHOD'] !== $routeInfo['method']) {
                continue;
            }
            
            // 提取参数
            $params = [];
            if (count($matches) > 1) {
                array_shift($matches);
                // 获取路由模式中的参数名
                preg_match_all('/:\w+/', $routePattern, $paramNames);
                $paramNames = $paramNames[0];
                
                foreach ($paramNames as $index => $paramName) {
                    $paramName = substr($paramName, 1); // 去掉冒号
                    $params[$paramName] = $matches[$index] ?? null;
                }
            }
            
            // 调用控制器
            $controllerName = 'app\\controller\\' . ucfirst($routeInfo['controller']) . 'Controller';
            $actionName = $routeInfo['action'];
            
            if (class_exists($controllerName) && method_exists($controllerName, $actionName)) {
                $controller = new $controllerName();
                $result = call_user_func_array([$controller, $actionName], $params);
                
                // 输出结果
                echo $result;
                return;
            }
        }
    }
    
    // 默认返回404
    header('HTTP/1.1 404 Not Found');
    echo '404 Not Found';
}

// 执行请求处理
handleRequest();